home *** CD-ROM | disk | FTP | other *** search
- dBASE III Printer Check
- (PC Magazine Vol 4 No 7 April 2, 1985 PC Tutor)
-
- To determine, from within dBASE III, whether the printer is online
- before the SET PRINT ON command is issued, you can create a small
- PRNCHECK.COM program that will check the printer status and return an
- error level of 1 if an error occurs, 0 if not. Use DEBUG to create
- PRNCHECK.COM.
- The program calls the printer interrupt, thus requesting printer
- status. It then checks for an error signal, which occurs either if
- bits 5 or 3 are high (1) or if bit 4 is low (0). The program sets the
- ERRORLEVEL 1 flag if the printer is off-line or not connected. To
- implement PRNCHECK.COM, put it in a batch program:
-
- A>COPY CON:PRNTEST.BAT
- PRNCHECK
- IF ERRORLEVEL 1 GOTO SETERR
- ECHO STORE 'N' TO PRNANS >PRNSET.PRG
- GOTO END
- :SETERR
- ECHO STORE 'Y' TO PRNANS >PRNSET.PRG
- :END
-
- The batch program calls PRNCHECK. If no printer error was
- generated, it makes a file named PRNSET.PRG, containing the line STORE
- 'N' TO PRNANS. If there was a printer error, the file contains the
- line STORE 'Y' TO PRNANS instead. Finally, your sequence of dBASE III
- commands is:
-
- RUN PRNTEST
- DO PRNSET
-
- This will run PRNTEST (setting up the file PRNSET.PRG to look like a
- dBASE command), then DO the command, so setting up a variable named
- PRNANS with value 'N' if there was no printer error, or 'Y' is a
- printer error occurred. Your dBASE program can then check the value
- of PRNANS and do whatever you like. Create PRNCHECK.COM with DEBUG
- as follows:
-
- A>DEBUG PRNCHECK.COM
- file not found
- -A100
- xxxx:0100 MOV DX,0000
- xxxx:0103 MOV AH,02
- xxxx:0105 INT 17
- xxxx:0107 TEST AH,28
- xxxx:010A JNZ 0118
- xxxx:010C MOV AL,10
- xxxx:010E AND AH,AL
- xxxx:0110 CMP AH,AL
- xxxx:0112 JNE 0118
- xxxx:0114 MOV AL,00
- xxxx:0116 JMP 011A
- xxxx:0118 MOV AL,01
- xxxx:011A MOV AH,4C
- xxxx:011C INT 21
- xxxx:011E <enter>
- -
- -RCX
- CX 0000
- :20
- -W
- Writing 20 bytes
- -Q
-
- -----------------------------------------------------------------
- dBASE III to Symphony
- (PC World Star-Dot-Star July 1984)
-
- Many people making the transition from dBASE II and 1-2-3 to dBASE
- III and Symphony have probably run into the same problem I did:
- Converting data from dBASE III to Symphony is not nearly as easy as
- converting from dBASE II to 1-2-3.
- My solution is as follows. First, run dBASE III and USE or SELECT
- a data file, then use the command COPY FILE filename.DBF TO
- filename.EXE DELIMITED to create a fily Symphony can read. Quit dBASE
- III and start Symphony. From the Services menu (<F9>) select File
- Import Structured, and then enter the name of the file created in prior
- step. All fields in the dBASE III file will be imported. I save time
- by using dBASE III to eliminate the fields I will not need before
- importing the file with Symphony. To do this, either modify the
- structure of the data base file before copying it or copy only the
- selected fields.
-
- -----------------------------------------------------------------
- dBASE III Lines Up
- (PC World Star-Dot-Star July 1985)
-
- The dBASE III routines CENTER.PRG and RIGHT.PRG will center or
- right-justify a line of text sent to the printer or the screen. The
- first line of each routine establishes the parameters to be passed when
- the program is called. The next line sets the width of the output
- device, and the two lines after that preserve the cursor position when
- the routine is called. The last line restores the cursor to its
- previous location. To use these routines type DO CENTER WITH row,string
- or DO RIGHT WITH row,string, where row is set to the desired line and
- string is the text to center or right-justify.
-
- * CENTER.PRG
- PARAMETERS ROW,STRING
- WIDTH=80
- R=ROW()
- C=COL()
- @ ROW,0 + (WIDTH - (LEN(STRING)))/2 SAY STRING
- @ R,C, SAY ''
-
- * RIGHT.PRG
- PARAMETERS ROW,STRING
- WIDTH=80
- R=ROW()
- C=COL()
- @ ROW,0 + (WIDTH - (LEN(STRING))) SAY STRING
- @ R,C SAY ''
-
- -----------------------------------------------------------------
- dBASE III Timer
- (PC World Star-Dot-Star July 1985)
-
- dBASE III has several functions and field types not available in
- dBASE II. The TIME() function can be used to set up a timer, as shown
- in TIMER.PRG. This small program can be run from within dBASE III.
- Type START = TIME() <Enter> to begin timing; type END = TIME() <Enter>
- to indicate the end of the interval to be measured. The command DO
- TIMER will execute the program, which will clear the screen and display
- the date and the elapsed time in "Saturday: March 16, 1985" format. By
- issuing the DO TIMER command at various points, START can be stated
- once and END stated several times to time several different aspects of
- a program.
-
- * TIMER.PRG. Assumes calling program executes START = TIME()
- * and END = TIME() prior to DO TIMER.
-
- SET TALK OFF
- STORE .T. TO GONOGO
- DO WHILE GONOGO
- HOUR1 = VAL(START)
- HOUR2 = VAL(END)
- MIN1 = VAL(SUBSTR(START,4,2))
- MIN2 = VAL(SUBSTR(END,4,2))
- SEC1 = VAL(SUBSTR(START,7,2))
- SEC2 = VAL(SUBSTR(END,2,2))
- ELAPHR = HOUR2 - HOUR1
- IF MIN2 > MIN1
- ELAPMIN = MIN2 - MIN1
- ELSE
- ELAPMIN = 60 - MIN1 + MIN2
- ELAPHR = ELAPHR - 1
- ENDIF
- IF SEC2 > SEC1
- ELAPSEC = SEC2 - SEC1
- ELSE
- ELAPSEC = 60 - SEC1 + SEC2
- ELAPMIN = ELAPMIN -1
- ENDIF
- ELAPSE=STR(ELAPHR,2)+":"+STR(ELA;MIN,2)+":"+STR(ELAPSEC,2)
- DDAY = CDOW(DATE()) + ": "
- DDATE=CMONTH(DATE())+STR(DAY(DATE()),3)+","+STR(YEAR(DATE()),5)
- HDR = DDAY + DDATE
- CLEAR
- @ 3,10 SAY HDR
- @ 5,10 SAY "Elapsed time was "
- @ 5,28 SAY ELAPSE
- STORE .F. TO GONOGO
- ENDDO
-
- -----------------------------------------------------------------
- dBASE III Function Keys
- (PC World September 1985 Star-Dot-Star)
-
- dBASE III has a SET FUNCTION command for defining the characters
- sent by functions keys F2 through F10. (Changing the value of F1 is
- not allowed.) You can use this facility to install menu selections
- via functions keys as demonstrated by the program DKEYS. The first
- section of the program sets the values of function keys F2 through F7
- to letters A through F, representing the six functions represented by
- the menu. The value of F8 is set to Z so that the program can recognize
- the F8 key and indicate an error if it is pressed. F9 and F10 are set
- to QUIT and EXIT, respectively. After setting the function key values,
- the program displays the menu and waits for a keystroke. A CASE
- statement executes the selected function, then returns control to the
- menu.
-
- DKEYS:
-
- SET FUNCTION 2 TO 'A'
- SET FUNCTION 3 TO 'B'
- SET FUNCTION 4 TO 'C'
- SET FUNCTION 5 TO 'D'
- SET FUNCTION 6 TO 'E'
- SET FUNCTION 7 TO 'F'
- SET FUNCTION 8 TO 'Z'
- SET FUNCTION 9 TO 'Q'
- SET FUNCTION 10 TO 'X'
- SET TALK OFF
- SET BELL OFF
- STORE .t. TO cust_menu
- CLEAR
- DO WHILE cust_menu
- STORE ' ' TO func_sel
- @ 1,34 SAY "Customer Menu"
- @ 2,37 SAY DATE()
- @ 5,24 SAY 'F2 Open a New Customer Account'
- @ 7,24 SAY 'F3 Modify a Customer Account'
- @ 9,24 SAY 'F4 Display Customer Accounts'
- @ 11,24 SAY 'F5 Delete a Customer Account'
- @ 13,24 SAY 'F6 Print an Account Summary Report'
- @ 15,24 SAY 'F7 Print a Detailed Account Report'
- @ 17,24 SAY 'F9 Display Prior Menu'
- @ 19,24 SAY 'F10 Exit to DOS'
- @ 23,24 SAY 'Select Desired Option:'
- @ 23,48 SAY func_set
- @ 23,48 GET func_set
- READ
- DO CASE
- CASE func_sel = 'A'
- DO newacc
- CASE func_sel = 'B'
- DO modacc
- CASE func_sel = 'C'
- DO dspacc
- CASE func_sel = 'D'
- DO delacc
- CASE func_sel = 'E'
- DO accsum
- CASE func_sel = 'F'
- DO accdet
- CASE func_sel = 'X'
- STORE .f. to cust_menu
- LOOP
- CASE func_sel = 'Q'
- QUIT
- ELSE
- @ 0,0 SAY CHR$(7)
- ENDCASE
- CLEAR
- ENDDO cust_menu
-
- -----------------------------------------------------------------
- Calculating Square Roots
- (PC Magazine Vol 4 No 23 Nov 12, 1985 Power User)
-
- The following is an old Pascal routine for calculating square
- roots converted into dBASE. Simply STORE the number you would like
- to a memory variable "number" and execute the procedure with DO SQRT.
- The result will be returned in the variable "sqrt." This result will
- be accurate to at least eight decimal places, perhaps more, depending
- on the precision of the initial number.
- Editor's Note: Converting Pascal routines into dBASE sounds like
- an avenue with all sorts of possible applications. There are thousands
- of Pascal routines to solve many of the problems dBASE programmers
- face, making this one to avoid rediscovering the wheel. The syntax
- of each of the two languages is similar enough to make Pascal an
- attractive source of ideas for .PRG files. Expect a lot of debugging
- though. The program below is modified slightly to add both an INPUT
- line at the top and a "?" line at the end. These lines make the
- program usable as a standalone method for obtaining square roots.
- To use the routine within a more complex application, you can drop
- these lines if the preceding code creates a memory variable called
- "number".
-
- * SQRT.PRG -- finds square roots [dBASE III]
- * ENTER WITH number = NUMBER
- * RETURNS WITH sqr = SQUARE ROOT
-
- SET HEADING OFF
- SET SAFETY OFF
- SET TALK OFF
- INPUT "NUMBER? " TO NUMBER
- STORE NUMBER * 1.00000000 TO LQnum
- STORE (1 + LQnum) / 2 TO LQs
- STORE LQnum * .00000001 TO LQtest
- STORE .N. TO LQdone
- DO WHILE .NOT. LQdone
- STORE LQs * LQs - LQnum TO lqHOLD
- IF LQhold < 0
- STORE 0 - LQhold TO LQhold
- ENDIF
- IF LQhold < LQtest
- STORE .Y. TO LQdone
- LOOP
- ENDIF
- STORE (LQs + (LQnum / LQs)) / 2 TO LQs
- ENDDO
- STORE LQs TO SQR
- ? "ANSWER: "
- ?? SQR
- RELEASE ALL LIKE LQ*
- SET TALK ON
- RETURN
-
- -----------------------------------------------------------------
- Stripping WordStar's High Bits
- (PC Magazine Vol 4 No 26 Dec 24, 1985 Power User)
-
- WordStar users with dBASE II have an easy way to strip the high
- bits the word processor tacks on to the end of each word in a document.
- Simply boot up dBASE II and load the WordStar file into dBASE's own
- editor by typing MODIFY COMMAND [filename.ext]. Since dBASE's editor
- assumes a .PRG extension, you must be sure to add your document's
- extension or a period after the filename if there is no extension.
- Then simply resave the file by hitting Ctrl-W. The resulting new file
- will be pure ASCII. This has workd with documents up to 30K bytes in
- size. dBASE will not strip out printer formatting commands, which you
- must take out separately.
- With dBASE III the process is a bit more complicated. First of
- all, dBASE III will truncate documents larger than about 4K bytes.
- Longer documents must be broken into 4K-byte segments, converted into
- ASCII, then reassembled using WordStar's nondocument mode. Also,
- unlike dBASE II, dBASE III won't strip out the high bits unless you
- actually change the file in some way while in MODIFY COMMAND. One way
- to get around this is to insert a blank line at the top of the file
- using Ctrl-N, delete it again with Ctrl-Y, then save the file with
- Ctrl-W. This converts the actual text into ASCII. However, there's
- still one more step left.
- dBASE II's MODIFY COMMAND automatically converts WordStar's "soft"
- carriage returns into regular (hard) ones, but dBASE III will not. To
- convert the carriage returns, open the document in WordStar's
- nondocument mode. At the top of the file, type Ctrl-QA (search and
- replace). At the "FIND?" prompt, hold down the Alt key and type 141
- on the numeric keypad, then release the Alt key and hit Enter. At the
- "REPLACE WITH?" prompt, type Ctrl-P and press the Enter key twice. At
- the "OPTIONS?" prompt, type NG and hit Enter. This will put a hard
- carriage return at the end of each line.
- Editor's Note: This tip is handy for converting WordStar files
- into something legible under DOS's TYPE command and can save you the
- cost of a conversion utility if you already own and use both programs.
- Some dBASE uers may be surprised to find that the program's editor can
- be used with files other than the default .PRG ones. This permits you
- to modify .FMT, .FRM and .MEM files, as well as any other ASCII files
- you wish from within dBASE.
-
- -----------------------------------------------------------------
- Concurrent Data Base Management
- (IBM PC Update Dec 1984 by J. D. Carrabis)
-
- Ashton-Tate makes much ado about dBASE III's knack for
- simultaneous data bases...up to 10 active data bases. But you will
- usually get an error message (TOO MANY FILES OPEN) on about the third
- data base reference when using a computer with less that 512k of
- memory.
- There is no problem running dBASE III on an XT. You copy all the
- files on the disks in the dBASE package to the hard disk, then place
- the dBASE factory SYSTEM disk in the floppy drive when you want to use
- dBASE.
- If, however, you are using a floppy drive system, you may hit some
- snags. You need two disks to boot the system. One disk should have a
- copy of DOS, the DBASE.EXE file, and the two configuration files
- (CONFIG.DB and CONFIG.SYS). More importantly, the disk that has these
- three files must be the SYSTEM disk that came with your dBASE package.
- This is easily done.
- You first copy all the other files (ASSIST.HLP, DBASE.OVL,
- HELP.DBS) from your SYSTEM disk to a blank formatted disk. Erase those
- same files from the dBASE SYSTEM disk. Use the DOS SYS command to
- place the DOS system on the dBASE SYSTEM disk. Now you have a bootable
- copy of dBASE III.
- Of course, when you boot up dBASE III, it asks you for the disk
- containing the overlay files -- that is the disk with the remaining
- dBASE files on it (the disk with ASSIST.HLP, DBASE.OVL, HELP.DBS).
- Take out the SYSTEM disk and place the new disk in. Now you can use
- dBASE III.
- But if you want to use the dBASE III RUN command, you have to
- place another file on your disk, the DOS COMMAND.COM file. You must
- copy this file to the new disk as well. In case you haven't used it
- yet, RUN is the dBASE III command that allows you to call programs
- external to dBASE. An example would be running WordStar from inside
- dBASE.
- What does this have to do with not being able to access more than
- two data bases simultaneously? You have to edit the CONFIG. SYS file
- so that it reads:
-
- FILES=20
- BUFFERS=24
-
- But even this doesn't usually work. The solution? Get more
- memory. What happens then?
- Every time a file is opened, dBASE III loses some room. You may
- notice the line FILES=20 in the CONFIG.SYS file. This line tells dBASE
- that is has a maximum of 20 files it can work with at a given time.
- Those 20 files get eaten quickly.
- You start with DOS -- one file. Next is DBASE.EXE -- two. You
- also need DBASE.OVL -- three files. Adding HELP.DBS makes four. Add a
- few data bases and their index files; a dBASE program file or two,
- each with a subroutine; a format file; a new data base created from the
- old ones; etc. and 20 files are gone.
- I did have fun with the CONFIG.DB file. This file allows you to
- customize the features of dBASE III. I also use a special AUTOEXEC.BAT
- file to facilitate the use of my computer, and a special CONFIG.DB file
- to facilitate the use of dBASE.
- Figures 1 and 2 show two separate files to boot up automatically
- with dBASE. The first is AUTOEXEC.BAT, and the second is CONFIG.DB.
- Figure 3 is an enhanced CONFIG.DB file that I use.
- The first line of the AUTOEXEC.BAT tells DOS to change from the
- starting directory to the dBASE directory. By first creating a dBASE
- directory, then accessing it, the drives are clean for possible future
- uses. Next I tell the computer to use a greater than symbol (>) when
- it gives me a system prompt. This is done with $G. I also have it
- tell me what directory (or path) I'm in with $P. Then I tell the
- computer immediately to stop whatever it's doing when I press Ctrl-
- Break. This is a nice feature and one that is toggled off in most
- cases. I like to bring things to a crashing halt on occasion.
- The next 7 lines are simply REMarks that I want printed on the
- screen. Remember that dBASE III wants to see its own SYSTEM disk when
- it begins working. These 7 REMarks increase the probability that it
- will get its SYSTEM disk.
- The PAUSE command is just that. It stops execution until a key is
- pressed. The last line in the AUTOEXEC.BAT file is the command to
- start using dBASE itself. When the time comes that you want to use
- something other than dBASE, you can make required changes to the
- AUTOEXEC.BAT file. As an example, let's say you set up your disk with
- directories for WordStar, Lotus, dBASE, BASIC and BASICA, DOS, LISP,
- FORTH, R:Base, Macros and Assemblers, P FORTRAN, and COBOL, as I have.
- I normally don't want to go between these areas. The work I do in
- one area is meant to stay in that area so the CHDIR\ command is
- adequate to get me where I want to be. There are times, however, that
- I don't want to leave my DOS directory but do want to get files from
- other directories. My own AUTOEXEC.BAT file has:
-
- PATH\DOS;\WS;\123;\DB;\BASICS;\L;\F1;\RB;\MACASS;\P;\F2;\C1
-
- in place of the CHDIR/DBASE command. The above PATH command tells DOS
- to look through all my directories to find what I'm looking for.
- Needless to say, I also don't have the REMark or PAUSE commands.
- I have something else in their place.
- Now for the CONFIG.DB file. Normally, I work with an XT, and most
- of my programs and data bases are located on it, so I set the default
- drive to C. I find the BELL annoying in the extreme, so I shut it
- off. Nor do I like to know everything dBASE does as it does it. I
- shut that off with TALK. I turn off the HEADINGS and SAFETY because I
- design my programs with their own headings and backup procedures. I
- find the DELIMITER distracting so that becomes historical. I do want
- to have the last chance at changing things, so I want to CONFIRM my
- answers. The ALTERNATE = C:DEBUG creates a separate dBASE DEBUG file
- that you can review to find out how far you got and what happened
- before you bombed out of a program.
- My own CONFIG.DB file is in Figure 3. Note that I've included a
- PATH for dBASE to search if I forget to tell it where something is. I
- also want to be able to escape from what I'm doing when I panic. I
- like things personal, hence the PROMPT. PW.COM is PERFECT WRITER, a
- word processing program that I like enough to use for editing my dBASE
- program files and memo fields.
- There are quite a few other modifications or adjustments you can
- make with the AUTOEXEC.BAT, CONFIG.SYS and CONFIG.DB files. The best
- way to get some use out of these files is to experiment.
-
- Figure 1: AUTOEXEC.BAT
-
- CHDIR\DBASE
- PROMPT $P$G
- BREAK ON
- REM
- REM ************************************************************
- REM * *
- REM * PLACE THE DBASE SYSTEM DISK IN DRIVE A *
- REM * *
- REM ************************************************************
- REM
- PAUSE
- DBASE
-
- - - - - - - - - - -
- Figure 2: CONFIG.DB
-
- DEFAULT = C:
- BELL = OFF
- TALK = OFF
- HEADINGS = OFF
- SAFETY = OFF
- DELIMITER = OFF
- CONFIRM = ON
- ALTERNATE = C:DEBUG
- EXACT = ON
-
- - - - - - - - - - -
- Figure 3: A personalized CONFIG.DB file
-
- DEFAULT = C:
- PATH = C:\DB;\WS;\RB;\DOS
- BELL = OFF
- TALK = OFF
- HEADINGS = OFF
- SAFETY = OFF
- DELIMITER = OFF
- CONFIRM = ON
- ESCAPE = ON
- PROMPT = What now, chum?
- TEDIT = PW.COM
- WP = PW.COM
-
- -----------------------------------------------------------------
- dBASE III on the RUN
- (PC World October 1985 Star-Dot-Star)
-
- The dBASE III RUN command can be used to execute programs and DOS
- commands. For example, the command RUN CD\ will make the root directory
- the current directory. The command RUN DIR will display the names of
- the files in the current directory. Even more powerful is the RUN
- command's ability to execute other files, including batch files. Thus,
- the command RUN ABC will execute the batch file ABC.BAT, which can
- contain a list of commands to be executed in sequence.
-
- -----------------------------------------------------------------
- Converting Symphony Files
- (PC Magazine Vol 4 No 23 Nov 12, 1985 Power User)
-
- Converting a Symphony file for use with dBASE III entails more
- than either Lotus's or Ashton-Tate's documentation would lead you to
- believe. The problems stem from the differences between dBASE II and
- dBASE III.
- Lotus provides a function, Translate, to go from either Symphony
- or 123 to dBASE II. Presumably, one should be able to use the dCONVERT
- utility to convert the dBASE II file upward to dBASE III. Not so.
- Therefore, after converting a Lotus file via the Translate facility,
- enter dBASE II (assuming you have dBASE II), USE the file, then QUIT.
- This resaves the file, adding whatever was missing to make it a proper
- .DBF file. dCONVERT will now be able to successfully convert the file
- upward to dBASE III.
- The Lotus Translate facility is supposed to allow you to convert
- either a complete worksheet or a subset range within the worksheet to
- a .DBF file. Unfortunately, in the original release version of the
- Translate facility, the range conversion option contains some bugs
- that prevent it from working properly. You must first do a File
- Extract of your spreadsheet for the desired range, then use Translate's
- worksheet option to convert the Extract.
- Prior to converting a Lotus database, all numeric record fields
- must be individually formatted, via the Cell Format option, to the
- number of decimal places required. The Global Format option within
- Symphony is not sufficient for decimal place designations. If you've
- used the Global Format option to set decimal length, Translate will
- truncate all decimals into a whole number. The solution is to format
- all database cells to their required decimal length prior to attempting
- any conversion into a .DBF file.
- Numeric Lotus files that contain a label prefix will not convert
- properly into .DBF files. In order to check each database cell within
- a spreadsheet for an unwanted label prefix, the following Symphony
- macro comes in handy:
-
- {down}{recalc C8}
- {if +C8 = "L"}~{beep}{quit}
- {branch \X}
-
- The macro is named \X and the cell C8 contains the formula:
- @CELLPOINTER("TYPE").
-
- -----------------------------------------------------------------
- PC Magazine Index on Disk
- (PC Magazine Vol 4 No 23 Nov 12, 1985 Power User)
-
- The indexes to PC Magazine, available from the Interactive Reader
- Service (IRS), contain a wealth of data. The value of this data can
- be enhanced with the command PCMAGNDX.PRG, which loads the index files
- into a dBASE data file. Once in dBASE's .DBF format, the indexes
- become powerful tools for tapping the treasures of PC Magazine. Any
- article can be located in seconds by author, subject or title, and
- groups of articles by the same author or covering the same topic can
- be located quickly.
- For readers who are not familiar with the index text files, they
- are set up as paired A and B files for each section of an index. The
- A file contains an article's title, description, volume, issue number
- and page number. The corresponding B file contains the author's name
- and the category of the article, such as graphics, networks, etc.
- On the IRS, the files are identified by the format VOL#A?.TXT
- and VOL#B?.TXT where "#" indicates the volume of the index (Volume
- 3 or 4), and "?" is a code indicating the range of issues included
- within the file (1 for issues 1-5, 2 for 6-12, etc.). Thus, the file
- pair VOL4A1.TXT and VOL4B1.TXT form a complete nidex for PC Magazine's
- Volume 4 Numbers 1 through 5.
- Before using PCMAGNDX.PRG, you must download paired copies of the
- index files from the IRS. Then, using any ASCII text editor, delete
- from both files the first five lines, which contain page and column
- headings. Otherwise, these headings will end up as records in the
- resulting dBASE file.
- Next, use dBASE to CREATE the three .DBF files TEMPA, TEMPB and
- PCMAGNDX. Use the exact field lengths as show, as they are critical.
- Finally, run PCMAGNDX.PRG by typing DO PCMAGNDX. The result will
- be the file PCMAGNDX.DBF containing the combined information from the
- original A and B text files. The program will automatically append
- new index file pairs to the database you've already created as new
- indexes become available on the IRS. The files TEMPA.DBF and TEMPB.DBF
- will be emptied of records but will remain on the disk so they need not
- be recreated each time PCMAGNDX.PRG is run.
-
- * PCMAGNDX.PRG - converts PC Magazine's Index Files to dBASE files
-
- SET HEADING OFF
- SET SAFETY OFF
- CLEAR
- SET TALK OFF
- ACCEPT "Enter Volume Number (the First # in VOL#A#.TXT) " TO V
- ACCEPT "Enter Issue Code (the Second # in VOL#A#.TXT) " TO N
- CLEAR
- @ 12,25 SAY "Processing - Please wait"
- SELECT A
- USE pcmagndx
- SELECT B
- USE tempA
- APPEND FROM VOL&V.A&N..TXT SDF
- GO TOP
- @ 13,25 SAY "CREATING RECORD: "
- DO WHILE .NOT. EOF()
- STORE SUBSTR(title,2,32) TO Mtitle
- STORE SUBSTR(subject,2,35) TO Msubject
- STORE vol TO Mvol
- STORE no TO Mno
- STORE page TO Mpage
- SKIP
- DO WHILE.NOT.EOF().AND.vol=" "
- STORE TRIM(Mtitle)+title TO Mtitle
- STORE TRIM(Msubject)+subject TO Msubject
- SKIP
- ENDDO
- SELECT A
- @ 13,52 SAY STR(RECNO(),4,0)
- APPEND BLANK
- REPLACE title WITH TRIM(Mtitle),subject WITH TRIM(Msubject),;
- vol WITH Mvol,no WITH Mno,page WITH Mpage
- SELECT B
- ENDDO
- @ 13,25 SAY "Adding Authors and Categories"
- SELECT C
- USE tempB
- APPEND FROM VOL&V.B&N..TXT SDF
- DELETE ALL FOR category=" " .AND. author=" "
- PACK
- SELECT A
- GO TOP
- SET RELATION TO RECNO() INTO C
- REPLACE ALL author WITH C->author,category WITH C->category
- SET RELATION
- @ 13,25 SAY " HOUSEKEEPING "
- SELECT B
- ZAP
- SELECT C
- ZAP
- CLEAR
- CLEAR ALL
- QUIT
- - - - - - - - - - -
- TEMPA.DBF Structure: | PCMAGNDX.DBF Structure:
- 001 TITLE C 033 | 001 TITLE C 050
- 002 SUBJECT C 036 | 002 SUBJECT C 080
- 003 VOL C 002 | 003 CATEGORY C 020
- 004 NO C 003 | 004 AUTHOR C 033
- 005 PAGE C 004 | 005 VOL C 002
- | 006 NO C 003
- TEMPB.DBF Structure: | 007 PAGE C 004
- 001 CATEGORY C 021
- 002 AUTHOR C 033
-
- -----------------------------------------------------------------
- Converting dBASE's Date Fields
- (PC Magazine Vol 4 No 18 Sept 3, 1985 Power User)
-
- The Date field may cause confusion to new dBASE III users. This
- new data type has several unique features that demand knowledge and
- effort to be useful. Here are a few shortcuts that are not explained
- in the manual but do work.
- 1. When converting Character data types to Date types,
- normally it is necessary to use the special CTOD function. However,
- if a file already has an entire field of data in MM/DD/YY format, and
- you wish to change this to a Date type in order to obtain the special
- properties of this data type, all you need to do is MODIFY the STRUCTURE
- of the field. There is no need to create another field and use the
- CTOD function to replace the original field. This can be useful for
- converting either dBASE II files or imported files.
- 2. Be extremely careful when using this data type in logical
- operands. If there is no date present in the field, and you are using
- an operand of any kind on this field, the record will not be selected.
- This is because the absence of a date yields a null variable rather
- than a 0 date. A null variable is neither greater than, less than, nor
- equal to any value.
- 3. The month feature will work as a selection criterion with
- a date field for any given file. This can be particularly useful for
- searching anniversary dates.
- Editor's Note: A word of caution -- when converting Character
- type dates to dBASE III's Date type, the data must be in MM/DD/YY or
- MM-DD-YY format. Dates in any other notation, such as YY/MM/DD, do
- not convert accurately using MODIFY STRUCTURE alone. Also, this
- conversion is a one-way street. Date type fields become strings of
- unexpected, and wierd, numbers when you try to change them into
- Character fields through MODIFY STRUCTURE.
-
- -----------------------------------------------------------------
- Same Time Next Month
- (PC World November 1985 Star-Dot-Star)
-
- dBASE III performs many more date calculations than dBASE II, but
- it's not capable of moving forward or backward in full months while
- maintaining the same day of the month, for instance, from January 5 to
- February 5. The routines MTHFWRD.PRG and MTHBACK.PRG do this.
- Keep these programs in a procedure file and call them when needed.
- The programs make adjustments for months that have different numbers of
- days. For example, when moving forward a month from January 30, the
- program calculates February 28. Similarly, when going backward, March
- 30 becomes February 28.
-
- *MTHFWRD.PRG: Calculates forward from the starting date. Variables are:
- * MDATE_FWD is supplied by the calling program set to the starting date
- * and will be returned as the future date
- * MCOUNT is supplied by the calling program as a counter for the
- * number of months to go forward in time
- * MTH, YR are used internally, then released
-
- YR = year(MDATE_FWD)
- MTH = month(MDATE_FWD) + MCOUNT
- do while MTH > 12
- MTH = MTH - 12
- YR = YR + 1
- enddo
- MDATE_FWD=ctod(str(MTH,2)+'/'+str(day(MDATE_FWD),2)+'/'+str(YR,4))
- if month(MDATE_FWD) > MTH
- MDATE_FWD = MDATE_FWD - day(MDATE-FWD)
- endif
- release MTH,YR
-
- - - - - -
- *MTHBACK.PRG: Calculates backward from the starting date. Variables are
- * MDATE_FWD is supplied by the calling program set to the starting date
- * and will be returned as the prior date
- * MCOUNT is supplied by the calling program as a counter for the
- * number of months to go backward in time
- * MTH, YR are used internally, then released
-
- YR = year(MDATE_FWD)
- MTH = month(MDATE_FWD) - MCOUNT
- do while MTH < 1
- MTH = MTH + 12
- YR = YR - 1
- enddo
- MDATE_FWD=ctod(str(MTH,2)+'/'+str(day(MDATE_FWD),2)+'/'+str(YR,4))
- MDATE_FWD = MDATE_FWD - day(MDATE_FWD)
- endif
- release MTH, YR
-
- -----------------------------------------------------------------
- Screen Utilities for dBASE III
- (PC Magazine Vol 4 No 18 Sept 3, 1985 Power User)
-
- When developing applications using dBASE III, it is often
- desirable to center or right-justify output to the screen or printer.
- CENTER.PRG and RIGHT.PRG allow for this type of justification without
- having to count characters or spaces.
- Line by line, the program works as follows: Line 1 establishes
- the parameters that need to be passed when the program is called.
- Line 2 establishes the width of the output device. The value shown,
- 80, is generally used for screen output. This can be changed to 133
- if output is to a wide-carriage printer. Lines 3 and 4 are used to
- preserve the cursor's position at the time the program is called.
- Line 5 computes the starting column of the text in STRING and sends
- it to the output device. Finally, line 6 resets the cursor to its
- position at the time of the program call.
- Editor's Note: These two short routines can be useful for
- displaying program titles, help messages, and other text on screen or
- in your custom reports. If you prefer, you can eliminate lines 3, 4
- and 6, which will cause the screen cursor to reappear on the line below
- your message text. CENTERII.PRG and RIGHTII.PRG shows how dBASE II
- users can achieve the same effect. While the routine lacks dBASE III's
- elegance (because there isn't a PARAMETERS command in II), the crucial
- line performing the necessary row+column calculations works exactly the
- same in both versions of dBASE and runs just as quickly. Macros are
- used to demonstrate how the program works. You can achieve the same
- results using your row/column parameters directly. This permits you
- to write only one line into your command file for each screen message.
- Using macros, however, does allow you to copy the routines into any of
- your files. You change the results by changing the numbers and text
- string stored at the top of the routines.
-
- * CENTER.PRG -- Centers text messages on screen/dBASE III
- PARAMETERS ROW,STRING
- WIDTH=80
- R=ROW()
- C=COL()
- @ ROW,0+(WIDTH-(LEN(STRING)))/2 SAY STRING
- @ R,C SAY ' '
-
- * RIGHT.PRG -- Right-justifies messages on screen/dBASE III
- PARAMETERS ROW,STRING
- WIDTH=80
- R=ROW()
- C=COL()
- @ ROW,0+(WIDTH-(LEN(STRING))) SAY STRING
- @ R,C SAY ' '
-
- * CENTERII.PRG -- Centers text strings on screen/dBASE II
- STROE "YOUR CENTERED TEXT" TO STRING
- STORE 5 TO ROW
- STORE 80 TO WIDTH
- @ ROW,0+(WIDTH-(LEN(STRING)))/2 SAY STRING
- RETURN
-
- * RIGHTII.PRG -- Right-justifies text on screen/dBASE II
- STORE "YOUR FLUSH-RIGHT TEXT" TO STRING
- STORE 5 TO ROW
- STORE 80 TO WIDTH
- @ ROW,0+(WIDTH-(LEN(STRING))) SAY STRING
- RETURN
-
- -----------------------------------------------------------------
- dBASE-WordStar/MailMerge Connection
- (PC Magazine Vol 4 No 18 Sept 3, 1985 Power User)
-
- Users of both dBASE and WordStar/MailMerge might find it useful
- to use the two together to produce personalized form letters.
- However, certain peculiarities in each program require that special
- programming be used so that MailMerge sees what it needs to perform
- properly with all kinds of data types. Problems that often occur
- when attempting to use dBASE's facilities directly -- without
- programming -- include unwanted trailing blanks and, word, embedded
- commas in the data file that confuse MailMerge to the point where it
- won't track the data correctly.
- Both of these problems are corrected by the dBASE program below.
- Basically, the program delineates field data with both quotation marks
- and commas, an overkill method that is acceptable to MailMerge. It
- also strips trailing blanks using the TRIM function. As an added
- bonus, the program can be used with any data file simply by changing
- the names of the fields used within the DO WHILE loop.
- Editor's Note: The program can be used by both dBASE II and III.
- EOF must be changed to EOF() for used with dBASE III. For the sake
- of clarity, an additional space is used between commas, single-quotes
- and double-quotes in the listing. For proper results do not include
- these spaces when typing the program into your system.
-
- Structure of SAMPLE.DBF
- FLD NAME TYPE WIDTH
- 001 MR_MRS C 004
- 002 FIRSTNAME C 015
- 003 LASTNAME C 015
- 004 COMPANY C 015
- 005 STREET C 020
- 006 CITY C 020
- 007 STATE C 004
- 008 ZIP C 005
-
- * MAILFILE.PRG - Converts data files for use with MailMerge
- USE sample.dbf
- SET TALK OFF
- SET RAW ON
- SET ALTERNATE TO datatext.txt
- SET ALTERNATE ON
- DO WHILE .NOT. EOF
- ? ' " ' , TRIM(mr_mrs) , ' " ' , ' , '
- ? ' " ' , TRIM(firstname) , ' " ' , ' , '
- ? ' " ' , TRIM(lastname) , ' " ' , ' , '
- ? ' " ' , TRIM(company) , ' " ' , ' , '
- ? ' " ' , TRIM(address) , ' " ' , ' , '
- ? ' " ' , TRIM(city) , ' " ' , ' , '
- ? ' " ' , TRIM(state) , ' " ' , ' , '
- ? ' " ' , TRIM(zip) , ' " ' , ' , '
- SKIP
- ENDDO
- SET ALTERNATE OFF
- RETURN
-
- -----------------------------------------------------------------
- DB3-RAC.TIP
-
- An undocumented feature of dBASE III is the ability to simulate
- Symphony's DOS.APP feature using dBASE III. DOS.APP enables you to
- exit from Symphony to DOS temporarily, perform function(s) you need and
- return to Symphony with your work intact, i.e., there is no need to
- exit Symphony, do other work, and then reload Symphony and your
- worksheet again.
- dBASE III has a RUN command, which seems to allow you to exit to
- DOS and run one EXE or COM file; that's what the documentation says.
- As it turns out, that is not quite true. I gave dBASE III the command
- RUN COMMAND.COM. It put me into DOS so I could run whatever I wanted.
- Once I was finished, I entered the command EXIT, and I was then back in
- dBASE III.
- I have found nothing so far that I can't do while in DOS. I did
- find, however, that to make the above RUN command work, I needed to
- have a floppy in drive A with COMMAND.COM on it even though I was using
- a hard disk system.
-
- Ron Cleaver
- 6958 Hanover Parkway #301
- Greenbelt, MD 20770
-